package io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

/**
 * 使用文件输入流从文件中读取数据
 */
public class FISDemo {
    public static void main(String[] args) throws IOException {
        /*
            1byte       8位2进制
            00000000-11111111    共256个值
               0        255


            11111111        -1
           -       1
           -------------
            11111110        -2
           -       1
           -------------
            11111101        -3
           -       1
           -------------
            11111100        -4
           -       1
           -------------
            11111011        -5

          符号位  1表示复数，0表示整数
            v
            11111111       负数的最大值 -1
            10000000       负数的最小值 -128
             ^^^^^^^
          数据位，表示数字

            01111111       正数的最大值 127
            00000000       正数的最小值 0

            00000000 00000000   short 正数最小值
            10000000 00000000   short 负数最小值

            00000000 00000000 00000000 00000000   int 正数最小值
            11111111 11111111 11111111 11111111   int -1 负数最大值
         */

        /*
            fos.dat文件内容:
            00000001 00000010
         */
        FileInputStream  fis = new FileInputStream("fos.dat");
        /*
            第一次读取:
            fos.dat文件内容:
            00000001 00000010
            ^^^^^^^^

            返回值d:00000000 00000000 00000000 00000001
                   |--------填充24个0--------| ^^^^^^^^
                                              实际读取到的字节
         */
        int d = fis.read();//1
        System.out.println(d);
        /*
            第二次读取:
            fos.dat文件内容:
            00000001 00000010
                     ^^^^^^^^

            返回值d:00000000 00000000 00000000 00000010
                   |--------填充24个0--------| ^^^^^^^^
                                            实际读取到的字节
         */
        d = fis.read();
        System.out.println(d);//2
        /*
            第三次读取:
            fos.dat文件内容:
            00000001 00000010 文件末尾
                              ^^^^^^^^

            返回值d:11111111 11111111 11111111 11111111
                   当读取到-1时，表示文件末尾，因为该2进制正常读取一个字节
                   是无法表示的。

         */
        d = fis.read();
        System.out.println(d);//-1
        fis.close();
    }
}


